package br.leiam.eolica.facade;

import sun.misc.BASE64Decoder;
import br.leiam.eolica.excecoes.EolicaException;
import br.leiam.eolica.sistema.GerenciadorDeGraficos;

public class FacadeEolica {

	private static FacadeEolica singleton;

	public static FacadeEolica getInstance() {
		if (singleton == null)
			singleton = new FacadeEolica();
		return singleton;
	}

	private GerenciadorDeGraficos gerGraficos;

	private FacadeEolica() {
		super();
		this.gerGraficos = GerenciadorDeGraficos.getInstance();
	}

	public String[] gerarGraficoRosaDosVentosEWeibull(String estacao,
			int altura, String dataInicial, String dataFinal)
			throws EolicaException {
		return gerGraficos.gerarGraficoRosaDosVentosEWeibull(estacao, altura,
				dataInicial, dataFinal);
	}

	public String[] gerarGraficoRosaDosVentosEWeibull(String estacao,
			int altura, String dataInicial, String dataFinal, int imageHeight,
			int imageWidth) throws EolicaException {
		return gerGraficos.gerarGraficoRosaDosVentosEWeibull(estacao, altura,
				dataInicial, dataFinal, imageHeight, imageWidth);

	}

	public String[] gerarGraficoVelocidade(String estacao, int altura,
			String dataInicial, String dataFinal) throws EolicaException {
		return gerGraficos.gerarGraficoVelocidade(estacao, altura, dataInicial,
				dataFinal);
	}

	public String[] gerarGraficoVelocidade(String estacao, int altura,
			String dataInicial, String dataFinal, int imageHeight,
			int imageWidth) throws EolicaException {
		return gerGraficos.gerarGraficoVelocidade(estacao, altura, dataInicial,
				dataFinal, imageHeight, imageWidth);
	}

	public String[] gerarGraficoFreqAeroProdEnergia(String estacao, int altura,String turbina,
			String dataInicial, String dataFinal, int imageHeight,
			int imageWidth) throws EolicaException {
		return gerGraficos.gerarGraficoFreqAeroProdEnergia(estacao, altura, turbina,
				dataInicial, dataFinal, imageHeight, imageWidth);

	}

	public String[] gerarGraficoFreqAeroProdEnergia(String estacao, int altura, String turbina,
			String dataInicial, String dataFinal) throws EolicaException {
		return gerGraficos.gerarGraficoFreqAeroProdEnergia(estacao, altura, turbina,
				dataInicial, dataFinal);
	}

	public String[] gerarWeibull(String estacao, int altura,
			String dataInicial, String dataFinal, int imageHeight,
			int imageWidth) throws EolicaException {
		return gerGraficos.gerarWeibull(estacao, altura, dataInicial,
				dataFinal, imageHeight, imageWidth);
	}

	public String[] gerarWeibull(String estacao, int altura, 
			String dataInicial, String dataFinal) throws EolicaException {
		return gerGraficos
				.gerarWeibull(estacao, altura, dataInicial, dataFinal);
	}

	/*public String[] gerarAerogerador(String aerogerador) {
		return gerGraficos.gerarAerogerador(aerogerador);
	}*/


	public static byte[] decode(String figura) throws EolicaException {
		return GerenciadorDeGraficos.decode(figura);
	}

	// NOVOS METODOS

	public String[] gerarTabela(String estacao, int altura, String turbina,String dataInicial,
			String dataFinal) throws EolicaException {
		return gerGraficos.gerarTabela(estacao, altura,turbina ,dataInicial, dataFinal);
	}
	
	public String[] gerarTabela(String estacao, int altura, String turbina,String dataInicial,
			String dataFinal, int imageHeight, int imageWidth) throws EolicaException {
		return gerGraficos.gerarTabela(estacao, altura,turbina ,dataInicial, dataFinal, imageHeight, imageWidth);
	}

	public String[] gerarGraficoCurvaPotenciaAerogerador(String estacao,
			int altura,String turbina, String dataInicial, String dataFinal)
			throws EolicaException {
		return gerGraficos.gerarGraficoCurvaPotenciaAerogerador(estacao, altura, turbina,dataInicial, dataFinal);
	}
	
	public String[] gerarGraficoCurvaPotenciaAerogerador(String estacao,
			int altura,String turbina, String dataInicial, String dataFinal, int imageHeight,
			int imageWidth)
			throws EolicaException {
		return gerGraficos.gerarGraficoCurvaPotenciaAerogerador(estacao, altura, turbina,dataInicial, dataFinal, imageHeight, imageWidth);
	}

	public String[] gerarGraficoFrequenciaDeDistribuicao(String estacao,
			int altura, String dataInicial, String dataFinal)
			throws EolicaException {
		return gerGraficos.gerarGraficoFrequenciaDeDistribuicao(estacao, altura, dataInicial, dataFinal);
	}
	
	public String[] gerarGraficoFrequenciaDeDistribuicao(String estacao,
			int altura, String dataInicial, String dataFinal, int imageHeight,
			int imageWidth) throws EolicaException {
		return gerGraficos.gerarGraficoFrequenciaDeDistribuicao(estacao, altura, dataInicial, dataFinal, imageHeight, imageWidth);
	}

	public String[] gerarGraficoRosaDosVentosVelocidades(String estacao,
			int altura, String dataInicial, String dataFinal) throws EolicaException {
		return gerGraficos.gerarGraficoRosaDosVentosVelocidades(estacao,altura, dataInicial, dataFinal);
	}
	
	public String[] gerarGraficoRosaDosVentosVelocidades(String estacao,
			int altura, String dataInicial, String dataFinal, int imageHeight,
			int imageWidth) throws EolicaException {
		return gerGraficos.gerarGraficoRosaDosVentosVelocidades(estacao,altura, dataInicial, dataFinal, imageHeight, imageWidth);
	}

	public String[] gerarGraficoRosaDosVentosFrequencia(String estacao,
			int altura, String dataInicial, String dataFinal)
			throws EolicaException {
		return gerGraficos.gerarGraficoRosaDosVentosFrequencia(estacao,altura, dataInicial, dataFinal);
	}
	
	public String[] gerarGraficoRosaDosVentosFrequencia(String estacao,
			int altura, String dataInicial, String dataFinal, int imageHeight,
			int imageWidth)
			throws EolicaException {
		return gerGraficos.gerarGraficoRosaDosVentosFrequencia(estacao,altura, dataInicial, dataFinal, imageHeight, imageWidth);
	}

}